package com.indusfo.spc.mapper;

import com.indusfo.spc.pojo.DeviceType;
import com.indusfo.spc.pojo.Inspect;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DeviceTypeMapper {
    int deleteByPrimaryKey(Integer deviceTypeId);

    int insert(DeviceType record);

    int insertSelective(DeviceType record);

    DeviceType selectByPrimaryKey(Integer deviceTypeId);

    int updateByPrimaryKeySelective(DeviceType record);

    int updateByPrimaryKey(DeviceType record);

    /**
     * 查询设备类别编码是否重复
     * @param deviceType
     * @return
     */
    int queryDeviceTypeCode(DeviceType deviceType);

    /**
     * 查询设备类别名称是否重复
     * @param deviceType
     * @return
     */
    int queryDeviceTypeName(DeviceType deviceType);

    /**
     * 新增设备类别 并返回主键id
     * @param deviceType
     * @return
     */
    int insertDeviceType(DeviceType deviceType);
    /**
     * 更新物料类别信息
     */
    int updateDeviceType(DeviceType deviceType);

    /**
     * 判断指定id下是否含有子类
     * @param deviceTypeId
     * @return
     */
    int countByDeviceTypePid(@Param("deviceTypeId") Integer deviceTypeId);

    /**
     * 查询指定类别下是否包含保养项目明细
     * @param deviceTypeId
     * @return
     */
    int countDeviceTypeInspectByMatTypeId(@Param("deviceTypeId") Integer deviceTypeId);

    /**
     * 查询指定类别下是否包含点检项目明细
     * @param deviceTypeId
     * @return
     */
    int countDeviceTypeMainTainByMatTypeId(@Param("deviceTypeId") Integer deviceTypeId);

    /**
     * 删除设备类别
     * @param deviceTypeId
     * @param dataState
     * @return
     */
    int defineDeviceType(@Param("deviceTypeId") Integer deviceTypeId,@Param("dataState") Integer  dataState);

    /**
     * 查询所有的设备类别
     * @return
     */
    List<DeviceType> queryAllDeviceType(DeviceType deviceType);

    /**
     * 计数
     * @return
     */
    int countAllDeviceType(DeviceType deviceType);


    /**
     * 设备类型树
     * @param deviceType
     * @return
     */
    List<DeviceType> queryTreeDeviceType(DeviceType deviceType);

    /**
     * 过滤设备类型下的保养项目
     * @param deviceType
     * @return
     */
    List<DeviceType> filterMaintain(DeviceType deviceType);

    /**
     * 计数过滤设备类型下的保养项目
     * @param deviceType
     * @return
     */
    int  countFilterMaintain(DeviceType deviceType);

    /**
     * 过滤设备类型下的点检项目
     * @param deviceType
     * @return
     */
    List<Inspect> filterInspect(DeviceType deviceType);

    /**
     * 计数过滤设备类型下的点检项目
     * @param deviceType
     * @return
     */
    int  countFilterInspect(DeviceType deviceType);

    /**
     * 获取指定设备类型的设备信息个数
     * @param deviceTypeId
     * @return
     */
    int queryDeviceByDeviceTypeId(@Param("deviceTypeId") Integer deviceTypeId);
}